Axiell Go installation guide - Linux
IMPORTANT!
If you are installing Go in an environment alongside EMu 9.0 or later, DO NOT use these installation notes.
From EMu 9.0 onwards, Go is bundled with EMu and the installation notes on the EMu Support site must be used.
This guide describes how to install Axiell Go on a Linux server, and how to troubleshoot an installation.
Axiell Go requires installation of two components:
- Axiell Go UI
- Axiell Go API
These are usually installed on the same server, although this is not a requirement. As described below, a number of other packages are also installed:
- An HTTP Server
- Java Runtime Environment
- Redis
Note:
- Access to the root account is required.
- Ability to edit text files from the command line is assumed.
- In the code examples below, code that must be modified to suit your environment is in highlighted with yellow
- As some installation commands differ between Linux distributions, you will need to know what distribution of Linux you are running before commencing:Identify your Linux distribution
- Login as
root
- Type
uname -a
If the response is similar to the following, you are using FreeBSD:
FreeBSD hostname.my.domain 12.0-RELEASE-p12 FreeBSD 12.0-RELEASE-p12 GENERIC amd64
Note: You will find details about installing Axiell Go on a FreeBSB server here.
If not, type the following to identify which distribution of Linux is installed:
cat /etc/os-release
The system response will include a
NAME
setting that identifies the distribution of Linux (CentOS in this example):NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
- Login as
The Axiell Go User Interface (UI) is distributed as a static release bundle which can be served by almost any HTTP server.
Requirements
- HTTP Server
NGINX 1.10.0 or later recommended
-OR-
Apache 2.4 or later recommended
Instructions for both NGINX and Apache are provided.
- Axiell Go User Interface
Latest Axiell Go UI 1.x.x release bundle (details below).
- Login as root
- Install NGINX by running one of the following commands (depending on your Linux distribution):
RedHat, CentOS, Fedora
yum install nginx
Ubuntu, Debian
apt update
apt install nginx
Diagnostics will appear on screen, followed by:
Transaction Summary
===========================================================
Install 1 Package (+4 Dependent packages)
Total download size: 2.4 M
Installed size: 6.7 M
Is this ok [y/d/N]:
Type
y
to continue.
The installation should run to completion, finishing with the message:
Complete!
- (Optional) As the location of configuration files varies between Linux distributions, the locate command can be useful.Check whether locate is installed
To check whether the locate command is installed, type:
locate
A response similar to the following indicates that the command is not installed:
locate command not found
To install the locate command, enter one of the following commands, typing
y
when prompted:RedHat, CentOS, Fedora
yum install locate
updatedb
Ubuntu, Debian
apt update
apt install locate
updatedb
The remainder of this guide assumes that locate is installed.
- Locate the NGINX configuration file:
locate nginx.conf
It is typically found at:
/etc/nginx/nginx.conf
- Edit the configuration file:
vi /etc/nginx/nginx.conf
- Locate the http context and within it the server entry:
http {
...
server {
# default virtual server configuration will appear here
.........
}
[We will insert an HTTP/HTTPS block of code here]
}
- One of the following blocks of code should be modified and inserted after the server entry (in the position indicated above)..
The first block (8.1 below) creates an HTTP connection; the second (8.2) uses HTTPS / SSL to encrypt communications and is the recommended approach. The choice between the two is one for your local security policy.
Note: Use of HTTPS / SSL requires installation of a certificate.
IMPORTANT: Localization
The following lines (highlighted in the code below) must be changed to reflect your environment:
server_name
hostname;root /path to nginx/html/axiell-go-ui;
- server_name must be updated to reflect your hostname. To identify this, run:
hostname
- The root setting must reflect the location in which Axiell Go UI will be installed followed by /html/axiell-go-ui.
To determine this pathway, run:
locate nginx/html
If, for example, the server name is:
go.melbourne.axiell.com
and the pathway to the
nginx/html
directory is :/usr/share/etc/nginx/html
the following settings are required:
server_name go.melbourne.axiell.com;
root /usr/share/etc/nginx/html/axiell-go-ui;
8.1 HTTPAdd the following code to set up an HTTP connection, and save the file:
#
# Axiell Go API upstream config. This specifies the host and port of the Axiell
# Go API. Port 8443 should be used when Go API has HTTPS/SSL enabled.
#
upstream axiell_go_api {
server 127.0.0.1:8000;
keepalive 64;
}
#
# Virtual Server for Axiell Go UI
server {
# HTTP
listen 81 default_server;
listen [::]:81 default_server;
# HTTPS
# listen 443 ssl http2 default_server;
# listen [::]:443 ssl http2 default_server;
#
# ssl_certificate "/etc/pki/nginx/server.crt";
# ssl_certificate_key "/etc/pki/nginx/private/server.key";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
server_name hostname;
root /path to nginx/html/axiell-go-ui;
gzip_static on;
client_max_body_size 100M;
# HTML5 History fallback
location / {
try_files $uri $uri/ /index.html;
}
#
# Forwards all requests to /api on to http://axiell_go_api/
#
location /api {
rewrite /api/(.*) /$1 break;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Prefix '/api';
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Port $http_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_max_temp_file_size 0;
proxy_pass http://axiell_go_api/;
proxy_redirect off;
proxy_read_timeout 240s;
}
}
8.2 HTTPS / SSLAdd the following code to set up an HTTPS / SSL connection, and save the file:
#
# Axiell Go API upstream config. This specifies the host and port of the Axiell
# Go API. Port 8443 should be used when Go API has HTTPS/SSL enabled.
#
upstream axiell_go_api {
server 127.0.0.1:8443;
keepalive 64;
}
#
# Virtual Server for Axiell Go UI
server {
# HTTP
# listen 81 default_server;
# listen [::]:81 default_server;
# HTTPS
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
#
ssl_certificate "/etc/pki/nginx/server.crt";
ssl_certificate_key "/etc/pki/nginx/private/server.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
server_name hostname;
root /path to nginx/html/axiell-go-ui;
gzip_static on;
client_max_body_size 100M;
# HTML5 History fallback
location / {
try_files $uri $uri/ /index.html;
}
# Forwards all requests to /api on to http://axiell_go_api/
location /api {
rewrite /api/(.*) /$1 break;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Prefix '/api';
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Port $http_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_max_temp_file_size 0;
proxy_pass http://axiell_go_api/;
proxy_redirect off;
proxy_read_timeout 240s;
}
}
Security certificates
Implementation of a secure connection entails use of a public / private key combination. If these have not been created for your server, it will be necessary to obtain them from a certificate authority.
Three files with the following extensions will be provided:
- .crt (a security certificate file)
- .ca-bundle (root and intermediate certificates)
- .key (private key, this must never be shared as it would compromise security)
Find out from the supplier of the keys what passwords are associated with them. At a minimum the private key (.key) will have a password. A password for the public key (.crt) may also have been set. Note these for inclusion in the Java configuration later.
Download the three files to the /tmp directory on the server.
Tip: Typically
ftp
orscp
would be used to perform this action.NGINX requires the .crt and .ca-bundle files to be combined. This can be done as follows:
cd /tmp
cat filename.crt My_CA_Bundle.ca-bundle > server.crt
where filename is the name of your .crt file; and My_CA_Bundle is the name of your combined files.
Move the files to the appropriate directories as follows:
mkdir -p /etc/pki/nginx/private
mv server.crt /etc/pki/nginx/server.crt
mv filename.key /etc/pki/nginx/private/server.key
where filename is the name of your .key file.
- server_name must be updated to reflect your hostname. To identify this, run:
- Download the latest Axiell Go UI release bundle.
The latest release appears in the Go User Interface section and is named axiell-go-release-n.n.n-install.zip where n.n.n is the release number.
Place this in the /tmp directory on the server. This must be extracted into the directory defined by the root setting above.
Enter:mkdir –p /path to nginx/html/axiell-go-ui
cd /path to nginx/html/axiell-go-ui
mv /tmp/axiell-go-release-n.n.n-install.zip .
unzip axiell-go-release-n.n.n-install.zip
- On Linux systems with SELinux, enable
HTTPD
.Check whether you are running SELinuxIf you are unsure whether you are running SELinux, run the following command as
root
:sestatus
If this produces the following message, SELinux is not being used and you can move onto the next step:
sestatus: command not found
Otherwise, the
semanage
command must be installed as follows:RedHat, CentOS, Fedora
yum provides semanage
The output of this command should conclude with something similar to:
policycoreutils-python-utils-2.9-16.0.1.el8.noarch : SELinux policy core python utilities
Repo : ol8_baseos_latest
Matched from:
Filename : /usr/sbin/semanage
The package you need to install is identified ahead of the text
: SELinux policy core python utilities
, in this example:policycoreutils-python-utils-2.9-16.0.1.el8.noarch
- Install the package:
yum install policycoreutils-python-utils-2.9-16.0.1.el8.noarch
Ubuntu, Debian
apt update
sudo apt-get install -y semanage-utils
If you are not using SELinux, move onto the next step.
If you are using SELinux enable
HTTPD
with the following command:semanage permissive -a httpd_t
- Enable NGINX at system boot by typing:
systemctl enable nginx.service
- Restart NGINX by typing:
systemctl restart nginx.service
If starting the service generates error messages complaining about the construct [::]:, it is likely that your system does not support ipv6. To resolve this edit the nginx.conf file and comment out (insert a #
at the start of) the line commencing with:
listen [::]:
- Login as root
- Install Apache by running one of the following commands (depending on your Linux distribution):
RedHat, CentOS, Fedora
yum install httpd
Ubuntu, Debian
apt update
apt install httpd
Diagnostics will appear on screen, followed by:
Transaction Summary
===========================================================
Install 1 Package (+4 Dependent packages)
Total download size: 2.4 M
Installed size: 6.7 M
Is this ok [y/d/N]:
Type
y
to continue.
The installation should run to completion, finishing with the message:
Complete!
- (Optional) As the location of configuration files varies between Linux distributions, the locate command can be useful.Check whether locate is installed
To check whether the locate command is installed, type:
locate
A response similar to the following indicates that the command is not installed:
locate command not found
To install the locate command, enter one of the following commands, typing
y
when prompted:RedHat, CentOS, Fedora
yum install locate
updatedb
Ubuntu, Debian
apt update
apt install locate
updatedb
The remainder of this guide assumes that locate is installed.
- Locate the Apache configuration file:
locate httpd.conf
It is typically found at:
/etc/httpd/conf/httpd.conf
- Create the configuration file:
vi /etc/httpd/conf.d/axiell-go.conf
-
Add the following configuration for HTTP access:
listen 80
<VirtualHost *:80>
DocumentRoot "/var/www/html/axiell-go-ui"
<Directory /var/www/html/axiell-go-ui>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
<Location "/api">
ProxyPreserveHost On
RequestHeader set X-Forwarded-Port "8002"
RequestHeader set X-Forwarded-Proto "http"
RequestHeader set X-Forwarded-Prefix "/api"
RequestHeader set Connection "upgrade"
ProxyPass "http://hostname:8000" timeout=600
ProxyPassReverse "http://hostname:8000"
</Location>
</VirtualHost>
-
Add the following configuration for HTTPS access:
listen 443
<VirtualHost *:443>
DocumentRoot "/var/www/html/axiell-go-ui"
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/axiell-go.crt
SSLCertificateKeyFile /etc/pki/tls/private/axiell-go.key
SSLCertificateChainFile /etec/pki/tls/certs/axiell-go.ca-bundle
ServerName hostname
<Directory /var/www/html/axiell-go-ui>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
<Location "/api">
ProxyPreserveHost On
RequestHeader set X-Forwarded-Port "8002"
RequestHeader set X-Forwarded-Proto "http"
RequestHeader set X-Forwarded-Prefix "/api"
RequestHeader set Connection "upgrade"
ProxyPass "http://hostname:8443" timeout=600
ProxyPassReverse "http://hostname:8443"
</Location>
</VirtualHost>
Security certificates
Implementation of a secure connection entails use of a public / private key combination. If these have not been created for your server, it will be necessary to obtain them from a certificate authority.
Three files with the following extensions will be provided:
- .crt (a security certificate file)
- .ca-bundle (root and intermediate certificates)
- .key (private key, this must never be shared as it would compromise security)
Find out from the supplier of the keys what passwords are associated with them.
-
Download the three files to the /tmp directory on the server. If any of the files have a password set, remove the password (see openssl for details on how to remove passwords).
Tip: Typically
ftp
orscp
would be used to perform this action. -
Move the files to the appropriate directories as follows:
mv server.crt /etc/pki/tls/certs/axiell-go.crt
mv server.key /etc/pki/tls/private/axiell-go.key
mv server.ca-bundle /etc/pki/tls/certs/axiell-go.ca-bundle
Download the latest Axiell Go UI release bundle.
The latest release appears in the Go User Interface section and is named axiell-go-release-n.n.n-install.zip where n.n.n is the release number.
-
Place this in the /tmp directory on the server. This must be extracted into the directory defined by the root setting above.
Enter:mkdir –p /var/www/html/axiell-go-ui
cd /var/www/html/axiell-go-ui
mv /tmp/axiell-go-release-n.n.n-install.zip .
unzip axiell-go-release-n.n.n-install.zip
- On Linux systems with SELinux, enable
HTTPD
.Check whether you are running SELinuxIf you are unsure whether you are running SELinux, run the following command as
root
:sestatus
If this produces the following message, SELinux is not being used and you can move onto the next step:
sestatus: command not found
Otherwise, the
semanage
command must be installed as follows:RedHat, CentOS, Fedora
yum provides semanage
The output of this command should conclude with something similar to:
policycoreutils-python-utils-2.9-16.0.1.el8.noarch : SELinux policy core python utilities
Repo : ol8_baseos_latest
Matched from:
Filename : /usr/sbin/semanage
The package you need to install is identified ahead of the text
: SELinux policy core python utilities
, in this example:policycoreutils-python-utils-2.9-16.0.1.el8.noarch
- Install the package:
yum install policycoreutils-python-utils-2.9-16.0.1.el8.noarch
Ubuntu, Debian
apt update
sudo apt-get install -y semanage-utils
If you are not using SELinux, move onto the next step.
If you are using SELinux enable
HTTPD
with the following command:semanage permissive -a httpd_t
- Enable Apache at system boot by typing:
systemctl enable httpd.service
- Restart Apache by typing:
systemctl restart httpd.service
- Java Runtime Environment version 8 (preferred) or 11
- Redis 3.0.0 or later
- Latest Go API 1.x.x release bundle (details below)
- Login as root
- Install OpenJDK by running one of the following commands (depending on your Linux distribution):
RedHat, CentOS, Fedora
yum install java-1.8.0-openjdk
Debian, Ubuntu
apt install openjdk-8-jre
- Verify that Java was successfully installed by running:
java -version
It is highly recommended that Redis is installed on the same server running the Axiell Go API.
- Login as root
- Install Redis by running one of the following commands (depending on your Linux distribution):
RedHat, CentOS, Fedora
yum install redis
Debian, Ubuntu
apt install redis
If any custom Redis configuration is required, open the Redis configuration file and modify as necessary:
vi /etc/redis/redis.conf
Note: Successful installation of Axiell Go does not require specific changes to this file.
- Enable the Redis service:
systemctl enable redis.service
- Restart the Redis service:
systemctl restart redis.service
- Check the Redis service is running:
systemctl status redis.service
- Login as root
- Install Axiell Go by running one of the following commands (depending on your Linux distribution):
Centos, Fedora, RedHat Linux
Download the latest RPM Go API release bundle into /tmp. The bundle is named go-api-server-n.n.n-n.noarch.rpm where n.n.n-n is the release number.
Install the release package by typing the following:
cd /tmp
rpm -i go-api-server-n.n.n-n.noarch.rpm
Debian, Ubuntu
Download the latest Deb Go API release bundle into /tmp. The bundle is named go-api-server-n.n.n_n.deb where n.n.n-n is the release number.
Install the release package by typing the following:
dpkg -i go-api-server_n.n.n_n.deb
- Enable the Go API service by running:
systemctl enable go-api-server.service
- Configure the Go API service by running:
systemctl edit go-api-server.service
This will open the default system editor and create the file /etc/systemd/system/go-api-server.service.d/override.conf.
(Optional) Change the default editorIf you do not wish to use the default system editor, you can set the EDITOR environment variable to your editor of choice by typing:
which my_fave_editor
For example:
which vi
This will return the full path to your editor. Then run:
EDITOR=/full path to my_fave_editor
export EDITOR
- Add one of the following blocks to the file depending on whether you configured the web server to use HTTP or HTTPS / SSL.
Note that the GO_DATA_URI setting must be updated to include the IP address and port of the IMu server that the EMu backend Go API should connect to. The port number must match that of the etc/imuserver.conf under the emu home directory on the EMu server and is typically 20000 greater than the port used to log into EMu. If you are already running the IMu server, check the IMu Server section below for more details.
In the example below the IMu server can be found on the localhost (127.0.0.1) at port 40193.
HTTPAdd the following code if the web server is using an HTTP connection:
[Service]
Environment=GO_SERVER_INTERFACE=127.0.0.1
Environment=GO_SERVER_PORT=8000
# Use 8443 when keystore is configured below
#Environment=GO_SERVER_PORT=8443
# Data URI, adjust point to main-port of IMu server of EMu backend
# Format is emu://hostname:port
Environment=GO_DATA_URI=emu://127.0.0.1:40193
# Redis URI
# Format is redis://[password@]hostname:port
Environment=GO_STORAGE_URI=redis://127.0.0.1:6379
# Keystore, uncomment when HTTPS/SSL is required
#Environment=GO_KEYSTORE_PATH=/path/to/keystore.jks
#Environment=GO_KEYSTORE_PASSWORD=keystore_password
#Environment=GO_KEYSTORE_KEY_PASSWORD=key_password
HTTPS / SSLAdd the following code if the web server is using an HTTPS / SSL connection:
[Service]
Environment=GO_SERVER_INTERFACE=127.0.0.1
# Environment=GO_SERVER_PORT=8000
# Use 8443 when keystore is configured below
Environment=GO_SERVER_PORT=8443
# Data URI, adjust point to main-port of IMu server of EMu backend
# Format is emu://hostname:port
Environment=GO_DATA_URI=emu://127.0.0.1:40193
# Redis URI
# Format is redis://[password@]hostname:port
Environment=GO_STORAGE_URI=redis://127.0.0.1:6379
# Keystore, uncomment when HTTPS/SSL is required
Environment=GO_KEYSTORE_PATH=/etc/pki/java/cacerts
Environment=GO_KEYSTORE_PASSWORD=keystore_password
Environment=GO_KEYSTORE_KEY_PASSWORD=key_password
Note:
Replace key_password with the password of the private key (.key file) noted earlier.
Replace keystore_password with the password of the public key (.crt file) noted earlier, or remove keystore_password if there is no password.
Set
GO_KEYSTORE_PATH
to the directory in which the javacacerts
file resides. To find this type:locate cacerts
If this returns
/etc/pki/java/cacerts
, theGO_KEYSTORE_PATH
would be set to:Environment=GO_KEYSTORE_PATH=/etc/pki/java/cacerts
-
Save the file.
- Restart the Go API service by running:
systemctl restart go-api-server
- Check the Go API service is running:
systemctl status go-api-server
IMPORTANT!
Any time override.conf
is modified it is important to run the following to ensure the modifications are recognized:
systemctl daemon-reload
systemctl restart axiell-go-server
Go Requirements
- EMu Version 6.0-1905101 or later
- IMu server enabled
Go Setup Script
The are some additional steps required to configure an EMu backend for Axiell Go:
- Login as emu
- Type gosetup
The gosetup script performs the following:
- Installs
CPAMN
. - Installs required Perl modules via
CPANM
. - Inserts required Registry entries.
Tip: See Troubleshooting below if you have issues when running the
gosetup
command. - Installs
IMu Server
Axiell Go connects to EMu via IMu server and requires that the imu
load is enabled and running:
- See the EMu 6 installation notes for details about enabling and configuring the IMu server.
- Ensure that any firewalls are configured to allow connections via the following IMu ports from the server running Axiell Go API. The ports can be determined by looking in the IMu server configuration file found at ~emu/etc/imuserver.conf on the EMu server:
- main-port (e.g. 40193)
- reconnect-port range suitable for expected number of connections (e.g.: opening ports 45000-45010 would allow for up to 10 authenticated IMu sessions).
- Be sure that the IMu server trace-level value is set to 1 in ~emu/etc/imuserver.conf.
Setting the trace level this low will prevent excessive logging information being generated in production environments.
Once the above steps are complete, restart IMu by restarting the EMu server load:
- Type emuload restart imu
Troubleshooting
If Go is installed on an existing platform, it is possible that ports stipulated in this document are already in use. This can be checked by running the following command as root
:
netstat -lnptu
This will show which ports are in use and by which processes. The ports to review are those used by:
- NGINX: 80 or 443, depending on whether running a secure connection.
- Java: defaults to 8000 or 8443, depending on whether running a secure connection.
- Redis: default to 6379.
If these are in use, the Go port configuration can be changed by editing the following files and changing all occurrences of the port in question to a new value:
nginx.conf
redis.conf
override.conf
After making any changes, it is important to restart services by running:
systemctl daemon-reload
systemctl restart service
where service
depends on which file was changed:
-
nginx
(for changes tonginx.conf
) redis
(for changes toredis.conf
)axiell-go-server
(for changes tooverride.conf
)
If override.conf
is modified, it is important to run the following to ensure the modifications are recognized:
systemctl daemon-reload
systemctl restart axiell-go-server
The default NGINX configuration includes rules for both IP4 and IP6. If NGINX produces a warning message on start up that includes the text [::]
, the corresponding line in the nginx.conf
file can be commented out, specifically:
listen [::]:80 default_server;
or
listen [::]:443 ssl http2 default_server;
Note that these warnings are not fatal.
If the gosetup
command produces the error:
cpanm is not installed correctly. Run cpanmsetup before running this script.
run the following commands as root
before retrying:
RedHat, CentOS, Fedora
yum install cpan
cpan App::cpanminus
Debian, Ubuntu
apt install cpan
cpan App::cpanminus
The likely cause of this error is that the cc compiler expected by perl (e.g. gcc) is not installed. In this case as root
run:
perl -v |egrep cc
This should display a line such as:
cc=’gcc’
Make note of the compile assigned to cc, in this case gcc
and install as follows:
RedHat, CentOS, Fedora
yum install gcc
Debian, Ubuntu
apt install gcc
If Go and the Go API are installed on separate machines and Go starts but does not connect or returns an exception, check:
-
the setting for server
127.0.0.1:8000
in the Go UIand
-
Environment=GO_SERVER_INTERFACE=127.0.0.1
in Go API.
Make sure that the server name matches. Note that in this case it cannot be 127.0.0.1
(localhost) but should match the machine name that holds the GO API.